// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "CommonButtonBase.h"

#include "LyraButtonBase.generated.h"

class UObject;
struct FFrame;

UCLASS(Abstract, BlueprintType, Blueprintable)
class ULyraButtonBase : public UCommonButtonBase
{
	GENERATED_BODY()

public:
	/**
	 * 设置按钮显示的文本
	 * @param InText 要设置的新文本
	 */
	UFUNCTION(BlueprintCallable)
	void SetButtonText(const FText& InText);
	
protected:
	// UUserWidget 接口
	/** 在构造之前进行本地初始化 */
	virtual void NativePreConstruct() override;
	// UUserWidget 接口结束

	// UCommonButtonBase 接口
	/** 更新输入动作控件 */
	virtual void UpdateInputActionWidget() override;
	/** 当输入方法改变时调用 */
	virtual void OnInputMethodChanged(ECommonInputType CurrentInputType) override;
	// UCommonButtonBase 接口结束

	/** 刷新按钮文本显示 */
	void RefreshButtonText();
	
	/**
	 * 蓝图可实现事件：更新按钮文本
	 * @param InText 新的显示文本
	 */
	UFUNCTION(BlueprintImplementableEvent)
	void UpdateButtonText(const FText& InText);

	/**
	 * 蓝图可实现事件：更新按钮样式
	 */
	UFUNCTION(BlueprintImplementableEvent)
	void UpdateButtonStyle();
	
private:
	UPROPERTY(EditAnywhere, Category="Button", meta=(InlineEditConditionToggle))
	uint8 bOverride_ButtonText : 1; //是否覆盖按钮文本的标志位
	
	UPROPERTY(EditAnywhere, Category="Button", meta=( editcondition="bOverride_ButtonText" ))
	FText ButtonText; //按钮显示的文本
};